package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.*;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author tune_the last
 * @date 2025/11/7 - 16:42
 */
@Mapper
public interface WeiboMapper {

//    @Insert("INSERT INTO weibo(content, created, user_id) Values (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

//    @Insert("DELETE FROM weibo WHERE id = #{wid}")
    int deleteWeiboById(Long wid);

//    @Insert("UPDATE weibo SET content=#{content}, created=#{created}, user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

//    @Select("SELECT id, content, created, user_id userId FROM weibo WHERE id = #{id}")
    Weibo selectWeiboById(Integer id);

//    @Select("SELECT id, content, created, user_id userId FROM weibo WHERE user_id = #{id}")
    List<Weibo> selectWeiboByUserId(Integer id);

    /**
     * 3.单条数据部分字段查询：
     *      根据微博id查询该条微博的内容和发布时间：content created
     */
//    @Select("SELECT content, created FROM weibo WHERE id = #{id}")
    WeiboVO1 selectWeiboVOById(Integer id);

    /**
     *      查询所有微博内容及用户id
     */
//    @Select("SELECT content, user_id userId FROM weibo ")
    List<WeiboVO2> selectWeiboVO2();

    int selectWeiboCount();


    /**
     * 9.动态更新;
     *  根据微博的id动态修改该条微博的信息
     */

    int dynamicUpdateWeiboById(Weibo weibo);

    /**
     * 10.动态删除数据：数组方式
     * DELETE FROM weibo WHERE id IN(201,203,205)
     */
    int dynamicDeleteWeiboByIds(Integer[] ids);

    /**
     * 11.动态删除数据：集合方式
     * DELETE FROM weibo WHERE id IN(201,203,205)
     */
    int dynamicDeleteWeiboByIds2(List<Integer> ids);

    /**
     * 12.根据微博id查询该条的微博的id、内容和用户id：id content user_id
     */
    WeiboVO3 selectResultMap1(Integer id);

    /**
     * 13.查询指定用户发布的微博信息，要求，用户id，用户名，发布的所有微博信息;
     */
    WeiboMapVO4 selectResultMap2(Integer id);

    /**
     * 练习：根据微博id获取指定微博的所有评论信息；
     * 要求显示：微博id、微博内容和该条微博所有评论信息
     */
    WeiboMapVO5 selectResultMap3(Integer id);


}
